package com.azt.api.pojo;

import com.azt.api.enums.CustomerAuditEnum;
import com.azt.utils.CommonUtil;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Entity
@Table(name = "u_company")
public class Company implements Serializable {

	public static final int AUDIT_STATE_INIT = 0;
	public static final int AUDIT_STATE_EDIT = 1;
	public static final int AUDIT_STATE_BACK = 2;
	public static final int AUDIT_STATE_PASS = 3;
	public static final int AUDIT_STATE_NO = 4;

	public static final Integer REMOVED_NO = 0;
	public static final Integer REMOVED_YES = 1;

	public static final Integer INIT_STATE = 0;
	public static final Integer FISRT_PASS =1;

	/**
	 * 主键
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;

	/**
	 * 公司名称
	 */
	@Column(name = "companyName")
	private String companyName;

	/**
	 * 母公司id
	 */
	private Integer parentId;

	/**
	 * 注册时间
	 */
	private Date registertime;

	/**
	 * 是否设置了管理员权限 0 ：否 1:是
	 */
	private Integer ifSetRole;

	/**
	 * 采购商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	private Integer ispurchaser;

	/**
	 * 供应商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	private Integer isprovider;

	/**
	 * 1.厂家 2.代理商
	 */
	private Integer providerMode;

	/**
	 * 实名认证状态(0:未认证1：待认证 2：认证通过3：认证不通过)
	 */
	//private Integer ifAuthen;

	/**
	 * 实名认证意见
	 */
	//private String authenOpinion;

	/**
	 * 基本资料审核状态 0待审核1待重新审核2退回修改3审核通过4禁用（删除）
	 */
	private Integer auditState;

	/**
	 * 审核意见
	 */
	private String auditOpinion;

	/**
	 * 审核时间
	 */
	private Date reviewtime;

	/**
	 * 是否移除(0未移除1已移除)
	 */
	private Integer removed;
	
	private Integer ifSelf;//是否自营
	/**
	 * 是否第一次审核通过
	 */
	private Integer firstPass ;

	
	public Integer getIfSelf() {
		return ifSelf;
	}

	public void setIfSelf(Integer ifSelf) {
		this.ifSelf = ifSelf;
	}

	private Date createtime;

	private Date updatetime;

	@Transient
	private List<CompanyApplifield> companyApplifields;

	@Transient
	private List<CompanyCategory> companyCategorys;

	/*企业安装币*/
	@Transient
	private List<CompanyAccount> companyAccounts;

	/*企业资质*/
	@Transient
	private List<CompanyAsset>  companyAssets;

	/*公司银行*/
	@Transient
	private List<CompanyBank> companyBanks;

	/**企业下的员工们**/
	@Transient
	private List<User> users;

	/*企业下的经营地区*/
	@Transient
	private List<CompanyBusiness> companyBusinesses;

	/*企业详情*/
	@Transient
	private CompanyInfo companyInfo;

	@Transient
	private String editType; //编辑类型

	private Integer signPingan; //是否签约平安


	/**
	 * 获取主键
	 *
	 * @return id - 主键
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * 设置主键
	 *
	 * @param id 主键
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * 获取公司名称
	 *
	 * @return companyName - 公司名称
	 */
	public String getCompanyName() {
		return companyName;
	}

	/**
	 * 设置公司名称
	 *
	 * @param companyName 公司名称
	 */
	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}

	/**
	 * 获取母公司id
	 *
	 * @return parentId - 母公司id
	 */
	public Integer getParentId() {
		return parentId;
	}

	/**
	 * 设置母公司id
	 *
	 * @param parentId 母公司id
	 */
	public void setParentId(Integer parentId) {
		this.parentId = parentId;
	}

	/**
	 * 获取注册时间
	 *
	 * @return registertime - 注册时间
	 */
	public Date getRegistertime() {
		return registertime;
	}

	/**
	 * 设置注册时间
	 *
	 * @param registertime 注册时间
	 */
	public void setRegistertime(Date registertime) {
		this.registertime = registertime;
	}

	/**
	 * 获取是否设置了管理员权限 0 ：否 1:是
	 *
	 * @return ifSetRole - 是否设置了管理员权限 0 ：否 1:是
	 */
	public Integer getIfSetRole() {
		return ifSetRole;
	}

	/**
	 * 设置是否设置了管理员权限 0 ：否 1:是
	 *
	 * @param ifSetRole 是否设置了管理员权限 0 ：否 1:是
	 */
	public void setIfSetRole(Integer ifSetRole) {
		this.ifSetRole = ifSetRole;
	}

	/**
	 * 获取采购商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 *
	 * @return ispurchaser - 采购商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	public Integer getIspurchaser() {
		return ispurchaser;
	}

	/**
	 * 设置采购商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 *
	 * @param ispurchaser 采购商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	public void setIspurchaser(Integer ispurchaser) {
		this.ispurchaser = ispurchaser;
	}

	/**
	 * 获取供应商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 *
	 * @return isprovider - 供应商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	public Integer getIsprovider() {
		return isprovider;
	}

	/**
	 * 设置供应商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 *
	 * @param isprovider 供应商 0 未勾选 1 已认证 2 未上传资料/打回重新上传 3 待认证 4.认证失败/污点账户
	 */
	public void setIsprovider(Integer isprovider) {
		this.isprovider = isprovider;
	}

	/**
	 * 获取1.厂家 2.代理商
	 *
	 * @return providerMode - 1.厂家 2.代理商
	 */
	public Integer getProviderMode() {
		return providerMode;
	}

	/**
	 * 设置1.厂家 2.代理商
	 *
	 * @param providerMode 1.厂家 2.代理商
	 */
	public void setProviderMode(Integer providerMode) {
		this.providerMode = providerMode;
	}

	/**
	 * 获取实名认证状态(0:未认证1：待认证 2：认证通过3：认证不通过)
	 *
	 * @return ifAuthen - 实名认证状态(0:未认证1：待认证 2：认证通过3：认证不通过)
	 */
	//public Integer getIfAuthen() {
	//	return ifAuthen;
	//}

	/**
	 * 设置实名认证状态(0:未认证1：待认证 2：认证通过3：认证不通过)
	 *
	 * @param ifAuthen 实名认证状态(0:未认证1：待认证 2：认证通过3：认证不通过)
	 */
	//public void setIfAuthen(Integer ifAuthen) {
	//	this.ifAuthen = ifAuthen;
	//}

	/**
	 * 获取实名认证意见
	 *
	 * @return authenOpinion - 实名认证意见
	 */
	//public String getAuthenOpinion() {
	//	return authenOpinion;
	//}

	/**
	 * 设置实名认证意见
	 *
	 * @param authenOpinion 实名认证意见
	 */
	//public void setAuthenOpinion(String authenOpinion) {
	//	this.authenOpinion = authenOpinion;
	//}

	/**
	 * 获取基本资料审核状态 0待审核1待重新审核2退回修改3审核通过4禁用（删除）
	 *
	 * @return auditState - 基本资料审核状态 0待审核1待重新审核2退回修改3审核通过4禁用（删除）
	 */
	public Integer getAuditState() {
		return auditState;
	}

	/**
	 * 设置基本资料审核状态 0待审核1待重新审核2退回修改3审核通过4禁用（删除）
	 *
	 * @param auditState 基本资料审核状态 0待审核1待重新审核2退回修改3审核通过4禁用（删除）
	 */
	public void setAuditState(Integer auditState) {
		this.auditState = auditState;
	}

	/**
	 * 获取审核意见
	 *
	 * @return auditOpinion - 审核意见
	 */
	public String getAuditOpinion() {
		return auditOpinion;
	}

	/**
	 * 设置审核意见
	 *
	 * @param auditOpinion 审核意见
	 */
	public void setAuditOpinion(String auditOpinion) {
		this.auditOpinion = auditOpinion;
	}

	/**
	 * 获取审核时间
	 *
	 * @return reviewtime - 审核时间
	 */
	public Date getReviewtime() {
		return reviewtime;
	}

	/**
	 * 设置审核时间
	 *
	 * @param reviewtime 审核时间
	 */
	public void setReviewtime(Date reviewtime) {
		this.reviewtime = reviewtime;
	}

	/**
	 * 获取是否移除(0未移除1已移除)
	 *
	 * @return removed - 是否移除(0未移除1已移除)
	 */
	public Integer getRemoved() {
		return removed;
	}

	/**
	 * 设置是否移除(0未移除1已移除)
	 *
	 * @param removed 是否移除(0未移除1已移除)
	 */
	public void setRemoved(Integer removed) {
		this.removed = removed;
	}

	/**
	 * @return createtime
	 */
	public Date getCreatetime() {
		return createtime;
	}

	/**
	 * @param createtime
	 */
	public void setCreatetime(Date createtime) {
		this.createtime = createtime;
	}

	/**
	 * @return updatetime
	 */
	public Date getUpdatetime() {
		return updatetime;
	}

	/**
	 * @param updatetime
	 */
	public void setUpdatetime(Date updatetime) {
		this.updatetime = updatetime;
	}

	public List<CompanyApplifield> getCompanyApplifields() {
		return companyApplifields;
	}

	public void setCompanyApplifields(List<CompanyApplifield> companyApplifields) {
		this.companyApplifields = companyApplifields;
	}

	public List<CompanyCategory> getCompanyCategorys() {
		return companyCategorys;
	}

	public void setCompanyCategorys(List<CompanyCategory> companyCategorys) {
		this.companyCategorys = companyCategorys;
	}

	public List<CompanyAccount> getCompanyAccounts() {
		return companyAccounts;
	}

	public void setCompanyAccounts(List<CompanyAccount> companyAccounts) {
		this.companyAccounts = companyAccounts;
	}

	public List<CompanyAsset> getCompanyAssets() {
		return companyAssets;
	}

	public void setCompanyAssets(List<CompanyAsset> companyAssets) {
		this.companyAssets = companyAssets;
	}

	public List<CompanyBank> getCompanyBanks() {
		return companyBanks;
	}

	public void setCompanyBanks(List<CompanyBank> companyBanks) {
		this.companyBanks = companyBanks;
	}

	public List<User> getUsers() {
		return users;
	}

	public void setUsers(List<User> users) {
		this.users = users;
	}

	public CompanyInfo getCompanyInfo() {
		return companyInfo;
	}

	public void setCompanyInfo(CompanyInfo companyInfo) {
		this.companyInfo = companyInfo;
	}

	public String getEditType() {
		return editType;
	}

	public void setEditType(String editType) {
		this.editType = editType;
	}
	
	@Transient
	private String auditStateName;

	public String getAuditStateName() {
		return CustomerAuditEnum.getName(getAuditState()==null?0:getAuditState());
	}

	/**
	 * 公司名称截取20个字符,超出部分显示...
	 * */
	public String getSimpleCompanyName() {
		return CommonUtil.getSimpleStr(getCompanyName(), 20);
	}

	public List<CompanyBusiness> getCompanyBusinesses() {
		return companyBusinesses;
	}

	public void setCompanyBusinesses(List<CompanyBusiness> companyBusinesses) {
		this.companyBusinesses = companyBusinesses;
	}

	public String getHiddenCompanyName() {
		return CommonUtil.getHiddenStr(this.companyName, 5);
	}


	public Integer getSignPingan() {
		return signPingan;
	}

	public void setSignPingan(Integer signPingan) {
		this.signPingan = signPingan;
	}
	
	public Integer getFirstPass() {
		return firstPass;
	}

	public void setFirstPass(Integer firstPass) {
		this.firstPass = firstPass;
	}
}